package cn.bonoon.kernel.web.annotations.form;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

/**
 * <pre>
 * 定义需要编辑的属性。
 * 
 * 该注释定义了添加和修改的功能。
 * 使用该注解的类的定义需要使用{@link FormEditor}、{@link FormInsert}或{@link FormUpdate}
 * 
 * 在使用该注释的时候，可以同时使用{@link PropertyInsert}或{@link PropertyUpdate}
 * 
 * 如果需要在明细项上进行解释说明，则可以使用注解{@link PropertyHelper}
 * 
 * 在被注解的字段上可以使用指定界面的控件，详细请查看{@link cn.bonoon.kernel.web.components.Component Component}的说明
 * </pre>
 * 
 * @author jackson
 * 
 */
@Target(FIELD)
@Retention(RUNTIME)
public @interface PropertyEditor {
	/**
	 * 用于界面显示的名字
	 * 
	 * @return
	 */
	String name() default "";

	/**
	 * <pre>
	 * 单位。如：元、个、天等单位。
	 * 会自动添加到数据项后面
	 * </pre>
	 * 
	 * .
	 * @return
	 */
	String unit() default "";

	/**
	 * ordinal
	 * @return
	 */
	int value() default 10;

	int height() default 0;
	
	/**
	 * 可以直接指定编辑框的宽度，如果指定了宽度，则不需要再进行宽度的计算
	 * @return
	 */
	int width() default 0;

	/**
	 * <pre>
	 * 0表示没有夸列,即对应html代码里的colspan="1"的情况.
	 * 大于小的表示有夸列,1表示夸1列,对应html代码为colspan="3"
	 * 
	 * <font color='red'>注意:夸一列是两个table的格,是一对&lt;th&gt;&lt;/th&gt;&lt;td&gt;&lt;/td&gt;</font>
	 * </pre>
	 * 
	 * @return
	 */
	int colspan() default 0;
	int rowspan() default 0;

	boolean readonly() default false;

	boolean required() default false;

	String validType() default "";

	String missingMessage() default "";

	String invalidMessage() default "";

	/**
	 * 是否忽略创建的情况
	 * 
	 * @return
	 */
	boolean ignoreCreate() default false;

	/**
	 * 是否忽略修改的情况
	 * 
	 * @return
	 */
	boolean ignoreModify() default false;
}
